// |**| Opcon|OperationMango|**|Opcon|OperationMango|**|
// |**| Source Code for the FPS Operation Mango     |**|
// |**| Opcon|OperationMango|**|Opcon|OperationMango|**|

using System;
using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;

namespace OperationMango
{


	public class MapFormat
	{

		public MapFormat ()
		{
		}
		
		struct MAP_VERSION
		{
			int version;
			int revision;
		}
		
		struct MAP_HEADER
		{
			int max_objects;
			int max_lights;
			int max_cameras;
			
			int max_entities;
			int max_items;
			int max_sounds;
			
			int max_players;
			
			bool use_skybox;
			bool use_fog;
		}
		
		struct MAP_SKYBOX_SIDE
		{
			string filename;
			int texid;
		}
		
		struct MAP_SKYBOX
		{
			MAP_SKYBOX_SIDE front;
			MAP_SKYBOX_SIDE back;
			MAP_SKYBOX_SIDE left;
			MAP_SKYBOX_SIDE right;
			MAP_SKYBOX_SIDE top;
			MAP_SKYBOX_SIDE bottom;
		}
		
		struct MAP_FOG
		{
			FOG_MODE fog_mode;
			float start;
			float end;
			float density;
			Color4 color;
		}
		
		struct MAP_STARTING_POSITION
		{
			Vector3d xyz;
			Vector3 angle;
			
			System.Drawing.Color select_rgb;
		}
		
		
		
		struct MAP_DETAILS
		{
			string map_name;
			MAP_TYPE map_type;
			MAP_EXIT_RULES map_exit_rules;
			

			MAP_STARTING_POSITION single_player;
			MAP_STARTING_POSITION[] multi_player;
		}
		
		struct MAP_VERTEX
		{
			Vector3d xyz;
			Color4 color;
			Vector3 normal;
			float fog_depth;
			
			System.Drawing.Color select_rgb;
		}
		
		struct MAP_UV_COORDS
		{
			Vector2 uv1;
			Vector2 uv2;
			Vector2 uv3;
		}
		
		struct MAP_TRIANGLE
		{
			MAP_VERTEX[] vertices;
			MAP_UV_COORDS[] uv;
		}
		
		struct MAP_TEXTURE
		{
			string filename;
			int id;
			MAP_TEXTURE_STYLE style;
			int blend_src;
			int blend_dst;
		}
		
		enum FOG_MODE
		{
			
		}
		
		enum MAP_TYPE
		{
			
		}
		
		enum MAP_EXIT_RULES
		{
			
		}
		
		enum MAP_TEXTURE_STYLE
		{
			
		}
	}
}
